package cn.com.easy.permission.model;

import javax.persistence.Entity;
import javax.persistence.Lob;
import javax.persistence.Table;

import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

import cn.com.easy.persistence.BaseEntity;

/**
 * 实体操作日志
 * 
 * @author nibili 2017年12月20日
 * 
 */
@Entity
@Table(name = "pf_md_option_log")
@DynamicInsert
@DynamicUpdate
public class OptionLogModel extends BaseEntity {

	/** */
	private static final long serialVersionUID = 7798149468264315191L;

	/** 类名 */
	@Lob
	private String className;
	/** 实体id */
	private Long entityId;
	/** 原字段值 */
	@Lob
	private String originalFieldValue;
	/** 修改后的字段值 */
	@Lob
	private String newFieldValue;
	/** 操作类型 */
	private int optionStatus = OPTION_STATUS_ENUM.UPDATE.value;

	/**
	 * 操作状态枚举
	 * 
	 * @author nibili 2017年11月10日
	 * 
	 */
	public static enum OPTION_STATUS_ENUM {

		ADD("新增", 1), UPDATE("更新", 2), DELETE("删除", 3);

		/** 状态名 */
		private String name;
		/** 状态值 */
		private int value;

		/**
		 * 构造方法
		 * 
		 * @param name
		 * @param value
		 */
		private OPTION_STATUS_ENUM(String name, int value) {
			this.name = name;
			this.value = value;
		}

		/**
		 * 根据值 获取玫举
		 * 
		 * @param value
		 * @return
		 * @author nibili 2017年8月7日
		 */
		public static OPTION_STATUS_ENUM getInstance(int value) {
			for (OPTION_STATUS_ENUM c : OPTION_STATUS_ENUM.values()) {
				if (c.getValue() == value) {
					return c;
				}
			}
			return null;
		}

		/**
		 * 状态列表
		 * 
		 * @return
		 * @author nibili 2017年8月7日
		 */
		public static OPTION_STATUS_ENUM[] getStatusList() {
			return OPTION_STATUS_ENUM.values();
		}

		/**
		 * get 状态名
		 * 
		 * @return
		 * @author nibili 2017年8月7日
		 */
		public String getName() {
			return name;
		}

		/**
		 * set 状态名
		 * 
		 * @param name
		 * @author nibili 2017年8月7日
		 */
		public void setName(String name) {
			this.name = name;
		}

		/**
		 * get 状态值
		 * 
		 * @return
		 * @author nibili 2017年8月7日
		 */
		public int getValue() {
			return value;
		}

		/**
		 * set 状态值
		 * 
		 * @param value
		 * @author nibili 2017年8月7日
		 */
		public void setValue(int value) {
			this.value = value;
		}

	}

	/**
	 * get 类名
	 * 
	 * @return
	 * @author nibili 2017年12月21日
	 */
	public String getClassName() {
		return className;
	}

	/**
	 * set 类名
	 * 
	 * @param className
	 * @author nibili 2017年12月21日
	 */
	public void setClassName(String className) {
		this.className = className;
	}

	/**
	 * get 原字段值
	 * 
	 * @return
	 * @author nibili 2017年12月21日
	 */
	public String getOriginalFieldValue() {
		return originalFieldValue;
	}

	/**
	 * set 原字段值
	 * 
	 * @param originalFieldValue
	 * @author nibili 2017年12月21日
	 */
	public void setOriginalFieldValue(String originalFieldValue) {
		this.originalFieldValue = originalFieldValue;
	}

	/**
	 * get 修改后的字段值
	 * 
	 * @return
	 * @author nibili 2017年12月21日
	 */
	public String getNewFieldValue() {
		return newFieldValue;
	}

	/**
	 * set 修改后的字段值
	 * 
	 * @param newFieldValue
	 * @author nibili 2017年12月21日
	 */
	public void setNewFieldValue(String newFieldValue) {
		this.newFieldValue = newFieldValue;
	}

	/**
	 * get 操作内容
	 * 
	 * @return
	 * @author nibili 2017年12月21日
	 */
	public int getOptionStatus() {
		return optionStatus;
	}

	/**
	 * set 操作内容
	 * 
	 * @param optionStatus
	 * @author nibili 2017年12月21日
	 */
	public void setOptionStatus(int optionStatus) {
		this.optionStatus = optionStatus;
	}

	/**
	 * get 实体id
	 * 
	 * @return
	 * @author nibili 2017年12月21日
	 */
	public Long getEntityId() {
		return entityId;
	}

	/**
	 * set 实体id
	 * 
	 * @param entityId
	 * @author nibili 2017年12月21日
	 */
	public void setEntityId(Long entityId) {
		this.entityId = entityId;
	}

}
